package com.cyzy.controller;

import com.cyzy.dto.Result;
import com.cyzy.pojo.User;
import com.cyzy.service.TeachersService;
import com.cyzy.utils.SHA256Utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.Base64;
import java.util.Map;

@RestController
//@RequestMapping()
public class TeachersController {

    @Autowired
    private TeachersService teacherService;

    @PostMapping("/login")
    public Result login(@RequestBody Map<String, String> loginData) {
        String userAcc = loginData.get("userAcc");
        String userPwd = loginData.get("userPwd");

        if (userAcc == null || userPwd == null) {
            return Result.error().code(400).message("用户名和密码不能为空");
        }

        String encryptedPassword = SHA256Utils.encryptPassword(userPwd);
        User teacher = teacherService.login(userAcc, encryptedPassword);

        if (teacher == null) {
            return Result.error().code(401).message("账号或密码错误，或您不是教师用户");
        }

        // ✅ 移除冗余的校区ID查询，login方法已包含该字段
        return Result.ok().message("登录成功").data("teacher", teacher);
    }

    @PostMapping("/forgotPassword")
    public Result forgotPassword(@RequestBody Map<String, String> requestData) {
        String userAcc = requestData.get("userAcc");
        String userEmail = requestData.get("userEmail");

        boolean result = teacherService.forgotPassword(userAcc, userEmail);
        return result ? Result.ok().message("密码重置邮件已发送")
                : Result.error().message("密码重置失败，请检查账号和邮箱");
    }

    @PostMapping("/updateProfile")
    public Result updateProfile(
//            @RequestParam Long userId,
//            @RequestParam String userName,
//            @RequestParam String userSex,
//            @RequestParam String userPhone,
//            @RequestParam String userEmail,
//            @RequestParam String userNote
            @RequestBody User existingUser
    ) {
        try {
//            User existingUser = teacherService.getUserById(userId);
//            if (existingUser == null) {
//                return Result.error().code(404).message("用户不存在");
//            }
//
//            // 更新用户信息
//            existingUser.setUserName(userName);
//            existingUser.setUserSex(userSex);
//            existingUser.setUserPhone(userPhone);
//            existingUser.setUserEmail(userEmail);
//            existingUser.setUserNote(userNote);

            // 保存更新
            boolean result = teacherService.updateProfile(existingUser);

            return result
                    ? Result.ok().message("个人信息更新成功")
                    : Result.error().message("更新失败，请稍后重试");
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error().message("更新过程中发生错误");
        }
    }

    @PostMapping("/uploadAvatar")
    public Result uploadAvatar(
            @RequestParam("file") MultipartFile file,
            @RequestParam Long userId) throws IOException {

        // 1. 验证文件
        if (file.isEmpty()) {
            return Result.error().message("请选择头像文件");
        }
        if (!file.getContentType().startsWith("image/")) {
            return Result.error().message("只支持图片格式");
        }
        if (file.getSize() > 2 * 1024 * 1024) {
            return Result.error().message("头像大小不能超过2MB");
        }

        // 2. 转换为纯Base64（不带前缀）
        String base64Data = Base64.getEncoder().encodeToString(file.getBytes());

        // 3. 更新数据库
        User user = new User();
        user.setUserId(userId);
        user.setAvatarFrameUrl(base64Data); // 直接存纯Base64

        boolean success = teacherService.updateProfile(user);

        return success ?
                Result.ok()
                        .data("avatarData", base64Data) // 返回纯Base64
                        .message("头像上传成功") :
                Result.error().message("头像更新失败");
    }
}